long scale(long x, long y, long z) {
    long t = x + 4*y + 12*z;
    return t;
}

// Usage:
// 1. Assemble the code:
//    gcc -Og -S -o leaq.3.5.1.scale.s leaq.3.5.1.scale.c
//  输出：
//  leaq	(%rdi,%rsi,4), %rax   # rdi存储x, rsi存储y 该leaq指令实际就是 x + 4*y
//	leaq	(%rdx,%rdx,2), %rcx   # rdx存储z 该leaq指令实际就是 3*z
//	leaq	0(,%rcx,4), %rdx      # 该leaq指令实际就是 12*z
//	addq	%rdx, %rax            # 现在 rdx 中存储着 12*z, rax中存储着 x + 4*y， addq 指令将 rax 和 rdx 中的值相加
//	ret
// 由此可见：leaq指令可以执行加法和有限形式的乘法运算。
//          leaq作为load effective address指令，实际上是将内存地址计算的结果存储到寄存器中。